home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / tkern10.zip / GNUISH\XMALLOC.ASM < prev    next >
Assembly Source File  |  1994-07-16  |  3KB  |  135 lines

  1.     .286p
  2.     ifndef    ??version
  3. ?debug    macro
  4.     endm
  5. publicdll macro    name
  6.     public    name
  7.     endm
  8. $comm    macro    name,dist,size,count
  9.     comm    dist name:BYTE:count*size
  10.     endm
  11.     else
  12. $comm    macro    name,dist,size,count
  13.     comm    dist name[size]:BYTE:count
  14.     endm
  15.     endif
  16.     ?debug    V 301h
  17.     ?debug    S "xmalloc.c"
  18.     ?debug    C E95CAA331509786D616C6C6F632E63
  19.     ?debug    C E90020821B17433A5C4243345C494E434C5544455C7374646C6962+
  20.     ?debug    C 2E68
  21.     ?debug    C E90020821B16433A5C4243345C494E434C5544455C5F646566732E+
  22.     ?debug    C 68
  23.     ?debug    C E90020821B16433A5C4243345C494E434C5544455C5F6E756C6C2E+
  24.     ?debug    C 68
  25.     ?debug    C E958AA33150A2E5C676E756C69622E68
  26. XMALLOC_TEXT    segment word public 'CODE'
  27. XMALLOC_TEXT    ends
  28. DGROUP    group    _DATA,_BSS
  29.     assume    cs:XMALLOC_TEXT,ds:DGROUP
  30. _DATA    segment word public 'DATA'
  31. d@    label    byte
  32. d@w    label    word
  33. _DATA    ends
  34. _BSS    segment word public 'BSS'
  35. b@    label    byte
  36. b@w    label    word
  37. _BSS    ends
  38. XMALLOC_TEXT    segment word public 'CODE'
  39.     ?debug    C E80109786D616C6C6F632E635CAA3315
  40.    ;    
  41.    ;    xmalloc (size_t bytes)
  42.    ;    
  43.     ?debug    L 27
  44.     assume    cs:XMALLOC_TEXT,ds:DGROUP
  45. _xmalloc    proc    far
  46.     ?debug    B
  47.     mov    ax,ds
  48.     nop    
  49.     inc    bp
  50.     push    bp
  51.     mov    bp,sp
  52.     push    ds
  53.     mov    ds,ax
  54.     sub    sp,4
  55.     ?debug    C E60562797465730A0A06000000
  56.     ?debug    B
  57.    ;    
  58.    ;    {
  59.    ;      void *ptr = (void *) malloc (bytes);
  60.    ;    
  61.     ?debug    L 29
  62.     push    word ptr [bp+6]
  63.     call    far ptr _malloc
  64.     pop    cx
  65.     mov    word ptr [bp-4],dx
  66.     mov    word ptr [bp-6],ax
  67.    ;    
  68.    ;    
  69.    ;      if (ptr == NULL)
  70.    ;    
  71.     ?debug    L 31
  72.     mov    ax,word ptr [bp-6]
  73.     or    ax,word ptr [bp-4]
  74.     jne    short @1@86
  75.    ;    
  76.    ;        error (2, 0, "Out of memory!");
  77.    ;    
  78.     ?debug    L 32
  79.     push    ds
  80.     push    offset DGROUP:s@
  81.     push    0
  82.     push    2
  83.     call    far ptr _error
  84.     add    sp,8
  85. @1@86:
  86.    ;    
  87.    ;    
  88.    ;      return ptr;
  89.    ;    
  90.     ?debug    L 34
  91.     mov    dx,word ptr [bp-4]
  92.     mov    ax,word ptr [bp-6]
  93.     jmp    short @1@114
  94. @1@114:
  95.    ;    
  96.    ;    }
  97.    ;    
  98.     ?debug    L 35
  99.     pop    cx
  100.     pop    cx
  101.     pop    ds
  102.     pop    bp
  103.     dec    bp
  104.     ret    
  105.     ?debug    C E318000400160100
  106.     ?debug    C E6037074721802FAFF00000562797465730A0A06+
  107.     ?debug    C 000000
  108.     ?debug    E
  109.     ?debug    E
  110. _xmalloc    endp
  111.     ?debug    C E9
  112.     ?debug    C FA00000000
  113. XMALLOC_TEXT    ends
  114. _DATA    segment word public 'DATA'
  115. s@    label    byte
  116.     db    'Out of memory!'
  117.     db    0
  118. _DATA    ends
  119. XMALLOC_TEXT    segment word public 'CODE'
  120. XMALLOC_TEXT    ends
  121. _s@    equ    s@
  122.     extrn    _malloc:far
  123.     public    _xmalloc
  124.     extrn    _error:far
  125.     ?debug    C EA010C
  126.     ?debug    C E31900000023180400
  127.     ?debug    C EB075F6D616C6C6F63190000
  128.     ?debug    C E31A00000023180400
  129.     ?debug    C EC085F786D616C6C6F631A180000
  130.     ?debug    C E31B00000023010401
  131.     ?debug    C EB065F6572726F721B0000
  132.     ?debug    C E60673697A655F740A0600000777636861725F74+
  133.     ?debug    C 0A060000
  134.     end
  135.